home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -seriously_amiga- / programming / other / gui4cli / tools / cli.gc < prev    next >
Text File  |  1999-04-29  |  6KB  |  213 lines

  1. G4C
  2.  
  3. ; This GUI is similar to the Workbench "Execute command" GUI, but more.
  4. ; There is a textin gadget for entering commands, buttons for choosing
  5. ; files, changing the directory, and opening a newshell.
  6.  
  7. ; More important, it can also send ARexx commands to the port shown
  8. ; in the other (bottom right) textin gadget (which can also be changed)
  9.  
  10. ; USE :
  11. ; Guiload guis:tools/cli.gc <commandline> <mode>    - or
  12. ; GuiOpen cli.gc <commandline> <mode>
  13.  
  14.  
  15. WINBIG 48 34 554 39 "Enter commands :"
  16. WinSmall 0 -1 422 30
  17. WinType  11110010
  18. BOX 0 0 554 39 out BUTTON
  19.  
  20. ; ------------------------------------------------------------------
  21. ;               System events
  22. ; ------------------------------------------------------------------
  23.  
  24. xOnLoad cl_Main cl_Mode
  25.     if $cl_Mode < ' '
  26.        cl_Mode = G4C
  27.     endif
  28.     cl_Port = $$G4C.port    ; Port name (can also sendrexx to ourselves)
  29.     guiopen cli.gc
  30.  
  31.     xonRELOAD cl_Main cl_Mode
  32.     guiopen cli.gc
  33.  
  34. xOnOpen
  35.     setwintitle cli.gc '$$CURRENT_DIR'
  36.     Update cli.gc 1 $cl_Main        ; show whatever the command line is 
  37.     SetGad cli.gc 1 ON              ; to get the cursor in the gadget immediately
  38.     ; update cycler to mode given
  39.     docase $cl_Mode
  40.        case = G4C
  41.             update cli.gc 10 0
  42.             break
  43.        case = CLI
  44.             update cli.gc 10 1
  45.             break
  46.        case = RUN
  47.             update cli.gc 10 2
  48.             break
  49.        case = EXEC
  50.             update cli.gc 10 3
  51.             break
  52.     endcase
  53.     stack = $$g4c.stack
  54.     update cli.gc 12 $stack
  55.  
  56. xOnRMB
  57.     status
  58.  
  59. ; ------------------------------------------------------------------
  60. ;===============> Main text input gadget
  61. ; ------------------------------------------------------------------
  62.  
  63. XTEXTIN 10 5 513 14 "" cl_Main "" 512
  64.     gadid 1
  65.     gadhelp 'Enter Command line'
  66.     gosub cli.gc DoCommand
  67.  
  68. XBUTTON 525 5 20 14 C
  69.     gadhelp 'Clear Command line'
  70.     cl_Main = ""
  71.     update cli.gc 1 ""
  72.  
  73. ; ------------------------------------------------------------------
  74. ;========> Cycler for choosing ARexx/CLI/RUN modes
  75. ; ------------------------------------------------------------------
  76.  
  77. XCYCLER 10 20 80 14 "" cl_Mode
  78.     GadID 10 ; we may want to change it from elsewhere
  79.     gadhelp 'Choose action to take on command line'
  80.     CSTR ARexx     G4C
  81.     CSTR CLI       CLI
  82.     CSTR RUN       RUN
  83.     CSTR Exec      EXEC
  84.  
  85.  
  86. ; ------------------------------------------------------------------
  87. ;========> GO button (to execute the command)
  88. ; ------------------------------------------------------------------
  89.  
  90. XBUTTON 90 20 40 14 "GO!"
  91.     gadhelp 'Execute action shown in Cycler'
  92.     gosub cli.gc DoCommand
  93.  
  94.  
  95. ; ------------------------------------------------------------------
  96. ;=======> button for file requester for commands
  97. ; ------------------------------------------------------------------
  98.  
  99. XBUTTON 135 20 65 14 "Cmd.."
  100.     gadhelp 'Choose a Command'
  101.     cl_cmd = ""
  102.     REQFILE -1 -1 300 -60 "Choose Files" LOAD cl_cmd  sys:c
  103.     if $cl_cmd > ""
  104.        cl_temp = $cl_Main
  105.        cl_Main = '$cl_cmd '
  106.        appvar cl_Main $cl_temp
  107.        update cli.gc 1 $cl_Main
  108.        delvar cl_temp
  109.     endif
  110.  
  111. ; ------------------------------------------------------------------
  112. ;========> Button for File requester for filenames
  113. ; ------------------------------------------------------------------
  114.  
  115. XBUTTON 200 20 65 14 "Files.."
  116.     gadhelp 'Choose a File as an argument'
  117.     cl_File = ""
  118.     REQFILE -1 -1 300 -60 "Choose Files" MULTI cl_File  $$CURRENT_DIR
  119.     if $cl_File > ""
  120.        appvar cl_Main $cl_File
  121.        update cli.gc 1 $cl_Main
  122.     endif
  123.  
  124.  
  125. ; ------------------------------------------------------------------
  126. ;========> Button to open a shell
  127. ; ------------------------------------------------------------------
  128.  
  129. XBUTTON 265 20 40 14 Cli
  130.     gadhelp 'Open a Shell'
  131.     CLI 'Newshell "con:0/150/640/100/NewShell/CLOSE"'
  132.  
  133.  
  134. ; ------------------------------------------------------------------
  135. ;========> Button to change directory
  136. ; ------------------------------------------------------------------
  137.  
  138. XBUTTON 305 20 40 14 CD
  139.     setvar cl_Dir ""
  140.     gadhelp "Change Gui4Cli's current directory"
  141.     REQFILE -1 -1 300 -60 "Choose directory" DIR cl_Dir ""
  142.     if $cl_Dir > ""
  143.        CD $cl_Dir
  144.        SetWinTitle cli.gc '$cl_Dir'
  145.     endif
  146.  
  147. ; ------------------------------------------------------------------
  148. ;========> Set stack size
  149. ; ------------------------------------------------------------------
  150.  
  151. XTEXTIN 365 20 55 14 "" stack 4000 12
  152.     gadid 12
  153.     gadhelp 'Sets the STACK size for CLI or RUN'
  154.     setstack $stack
  155.  
  156. XBUTTON 350 20 15 14 "<"
  157.     gadhelp 'Decrease stack size'
  158.     if $$g4c.stack > 1500             ; minimum stack size
  159.        stack == $$g4c.stack - 1024
  160.     endif
  161.     update cli.gc 12 $stack
  162.     setstack $stack
  163.  
  164. XBUTTON 420 20 15 14 ">"
  165.     gadhelp 'Increase stack size'
  166.     stack == $$g4c.stack + 1024
  167.     update cli.gc 12 $stack
  168.     setstack $stack
  169.  
  170. ; ------------------------------------------------------------------
  171. ;========> TEXTin gadget to get port name for sendrexx command
  172. ; ------------------------------------------------------------------
  173.  
  174. XTEXTIN 440 20 105 14 "" cl_Port "Gui4Cli" 40
  175.     GadID 2
  176.     gadhelp 'Port name for sending ARexx commands'
  177.  
  178.  
  179. ; ------------------------------------------------------------------
  180. ;========> ROUTINE to execute command
  181. ; ------------------------------------------------------------------
  182.  
  183. xROUTINE DoCommand
  184.     docase $cl_Mode
  185.     case  = G4C
  186.             SendRexx $cl_Port $cl_Main
  187.             break
  188.     case  = CLI
  189.             CLI $cl_Main
  190.             break
  191.     case  = RUN
  192.             RUN $cl_Main
  193.             break
  194.     case  = EXEC
  195.             CLI 'execute $cl_Main'
  196.             break
  197.     endcase
  198.     if $$RETCODE = 0
  199.        SetWinTitle cli.gc "OK - $$G4C.DIR"
  200.     else
  201.        SetWinTitle cli.gc "* ERROR * $$RETCODE $$REXXRET"
  202.     endif
  203.  
  204.  
  205. ; ------------------------------------------------------------------
  206. ;=========> before commands are executed, we restore the window title
  207. ; ------------------------------------------------------------------
  208.  
  209. xBEFORE
  210.     SetWinTitle cli.gc '$$CURRENT_DIR'
  211.  
  212.  
  213.